/**
 * 
 */
package com.wbl.client;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.Scanner;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.handler.timeout.IdleState;
import io.netty.handler.timeout.IdleStateEvent;

/**
 * @Description:  
 * @version: v1.0.0
 * @author: wbl
 * @date: 2019年9月20日 下午5:29:32
 */
public class ClientHandler extends ChannelInboundHandlerAdapter{
	public static String Name = "";
	  @Override
	    public void channelActive(ChannelHandlerContext ctx) throws Exception {
//		  System.out.println("channelActive登录成功！当前总登录数："+InitConfig.client_num);
		  
	    }
	/**
	 * @Description: 
	 *
	 */
	@Override
	public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
			if(null == msg) return;
			String data = (String) msg;//收到数据
			
			
			if("牛牛客户端登录成功！".equals(data)){
				System.out.println("牛牛客户端启动成功！");
				System.out.println("请选择序号:1.登录   2.注册");
				String cli = read();
				if("1".equals(cli)){
					System.out.println("请输入用户名：");
					Name = read();
					ctx.channel().writeAndFlush("wbl1"+Name);
				}else if("2".equals(cli)){
					System.out.println("请输入新用户名：");
					Name = read();
					ctx.channel().writeAndFlush("wbl2"+Name);
				}else{
					System.out.println("指令输入有误，请重新输入:1.登录   2.注册");
					Name = read();
					ctx.channel().writeAndFlush("wbl2"+Name);
				}
				
			}else if(data.contains("wbl2")||data.contains("wbl3")){
				System.out.println(data.substring(4));
				
				System.out.println("请选择序号:1.登录   2.注册");
				while(true){
					String cli = read();
					if("1".equals(cli)){
						System.out.println("请输入用户名：");
						Name = read();
						ctx.channel().writeAndFlush("wbl1"+Name);
						break;
					}else if("2".equals(cli)){
						System.out.println("请输入新用户名：");
						Name = read();
						ctx.channel().writeAndFlush("wbl2"+Name);
						break;
					}else{
						System.out.println("指令输入有误，请重新输入:1.登录   2.注册");
					}
				}
				
			}else if(data.contains("wbl1")||data.contains("wbl4")){
				System.out.println(data.substring(4));
				System.out.println("百人牛牛游戏开始！请输入命令序号：1随机抢庄入桌(匹配) 2.查询账户信息  3.退出");
				while(true){
					String cli = read();
					if("1".equals(cli)){
						ctx.channel().writeAndFlush("wbl3"+Name);
						break;
					}else if("2".equals(cli)){
						ctx.channel().writeAndFlush("wbl4"+Name);
						break;
					}else if("3".equals(cli)){
						ctx.channel().writeAndFlush("wbl5"+Name);
						System.out.println("客户端正常登出，"+Name+"账号非常安全！");
						System.exit(1);
					}else{
						System.out.println("指令输入有误，请重新输入:1随机抢庄入桌(匹配)   2.查询账户信息  3.退出");
					}
				}
			
			}else if(data.contains("wbl5") || data.contains("wbl6")){//开始返回结果
				System.out.println(data.substring(4));
				while(true){
					System.out.println("\n\n百人牛牛游戏开始！请输入命令序号：1随机抢庄入桌(匹配)  2.查询账户信息  3.退出");
					String cli = read();
					if("1".equals(cli)){
						ctx.channel().writeAndFlush("wbl3"+Name);
						break;
					}else if("2".equals(cli)){
						ctx.channel().writeAndFlush("wbl4"+Name);
						break;
					}else if("3".equals(cli)){
						System.out.println("客户端正常登出，"+Name+"账号非常安全！");
						ctx.channel().writeAndFlush("wbl5"+Name);
						System.exit(1);
					}else{
						System.out.println("指令输入有误，请重新输入:1随机抢庄入桌(匹配)  2.查询账户信息  3.退出");
					}
				}
			}
		
	}
	/**
	 * @Description: 
	 *
	 */
	@Override
	public void channelInactive(ChannelHandlerContext ctx) throws Exception {
		super.channelInactive(ctx);
	}
	
	@Override
	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
//        System.out.println("Unexpected exception from downstream : " + cause.getMessage());
		System.out.println("客户端异常关闭，游戏结束!");
        try{
        	ctx.channel().writeAndFlush("wblquit"+Name);
        }catch(Exception e){
        	System.out.println("客户端中断，未通知到服务端，将延时5分钟，客户端在服务器自动登出");
        }
        ctx.close();
	}
	
	  /** 空闲次数 */
    private int idle_count = 1;
    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object obj) throws Exception {
        
        if (obj instanceof IdleStateEvent) {
            IdleStateEvent event = (IdleStateEvent) obj;
            if (IdleState.WRITER_IDLE.equals(event.state())) { // 如果写通道处于空闲状态就发送心跳命令
            	  String str = "xintiao";
            	  ctx.channel().writeAndFlush(str);
            }
        }
    }
    
    
    public static String read() throws Exception{  
    	String str = "";
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            str = sc.next();
           break;
        }
        return str;    
    }

    
}
